const app = getApp()
var Util = require('../utils/util.js')
Component({
  lifetimes: {
    attached: function () {//在组件实例被引入页面时执行
      let that = this;
       // 检测用户是否授权
        wx.getSetting({
          success:(res)=>{
            if (res.authSetting['scope.userInfo']){
              //用户已经授权
              wx.getUserInfo({
                success: (res)=>{
                  var userInfo = JSON.parse(res.rawData);
                  //根据openid登陆
                  that.loginByOpenid(userInfo, res.encryptedData, res.iv);
                }
              })
            }else{
              //用户未授权 用户信息
              that.setData({
                mask_view:false,
                getUserInfoDialog:false,
                getUserNumberDialog:false,
              })
            }
          }
        })
      
    },
    detached: function () {
      // 在组件实例被从页面节点树移除时执行
    },
  },
  /** 
   * 组件的属性列表 
   * 用于组件自定义设置 
   * 在properties中定义A组件要传过来的参数类型
   */
  properties: {
    
  },
  observers:{
   
  },
  /** 
   * 私有数据,组件的初始数据 
   * 可用于模版渲染 
   */
  data: {
    mask_view: true,//遮罩层
    getUserInfoDialog:true,//获取用户信息
    getUserNumberDialog:true//获取用户手机号
  },
  /**
   * 组件的方法列表 
   * 更新属性和数据的方法与更新页面数据的方法类似 
   */
  methods: {
    //授权功能，以及获取手机号
    getUserInfo: function (res) {
      var that = this;
      if (res.detail.errMsg === "getUserInfo:fail auth deny") {
        return;
      }else {
        var userInfo = JSON.parse(res.detail.rawData);
        //根据openid登陆
        this.loginByOpenid(userInfo, res.detail.encryptedData, res.detail.iv);
      }
    },
    loginByOpenid(catchUserInfo, catchUIEncryptedData, catchUIIv) {
      //根据openid登陆
      wx.setStorageSync('catchUserInfo', catchUserInfo);
      wx.setStorageSync('catchUIEncryptedData', catchUIEncryptedData);
      wx.setStorageSync('catchUIIv', catchUIIv);
      Util.wxLogin((res) => {
        console.log(`wxLogin`)
        console.log(res)
        if (res.data.code == 500) {//未登录，手机号授权 
          let unid = res.data.message;
          wx.setStorageSync('unionId', unid)
          this.setData({
            mask_view: true,
            getUserInfoDialog: true,
            getUserNumberDialog: false,
          })
        } else {//正常登陆，直接登陆
          console.log(`已登录过，直接自动登录`)
          this.setData({
            mask_view: true,
            getUserInfoDialog: true,
            getUserNumberDialog: true,
          })
          wx.setStorageSync("telNum", res.data.data.account);
          wx.setStorageSync('usertoken', res.data.data.a_token)
          this.getUserFn(true);
        }
      })
    },

    getPhoneNumber: function (res) {
      var that = this;
      if (res.detail.errMsg == "getPhoneNumber:fail user deny") {//用户拒绝获取手机号
        that.setData({
          mask_view: false,
          getUserNumberDialog: false,
        });
        return;
      }else{
        //用户同意授权
        that.setData({
          mask_view: true,
          getUserNumberDialog: true,
        });
        wx.setStorageSync('cashIv', res.detail.iv);
        wx.setStorageSync('cashEncryptedData', res.detail.encryptedData);
        //自动登录
        Util.loginByMobile((res) => {
          console.log(`loginByMobile`)
          console.log(res)
          if(res.data.code == 200){
            wx.setStorageSync("telNum", res.data.data.account);
            wx.setStorageSync('usertoken', res.data.data.a_token)
            that.getUserFn(true);
          }else{
            wx.showToast({
              title: res.data.message,
            })
          }
        })
      }
    },
    numberLogin(){
      wx.navigateTo({
        url: '/pages/login/login',
      })
    },
    getUserFn(e) {
      this.triggerEvent("run", e)
    }
  }
})